package com.order.itemcategoryproject.mapper;

import com.order.itemcategoryproject.pojo.VO.dBlOrderDtOnlineVo;
import com.order.itemcategoryproject.pojo.dBlOrderDtOnline;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface DBlOrderDtOnlineMapper {

    // 添加订单明细信息
    int insertOrderDetailInfo(dBlOrderDtOnline detail);

    // 批量添加订单明细信息 导入进来的订单明细信息
    void batchInsertDetailInfo(List<dBlOrderDtOnline> details);

    // 根据订单编号获取订单详情信息
    List<dBlOrderDtOnline> getAllOrderDetailByOrderId(String orderId);

    // 根据订单编号获取订单详情信息 获取的是导入的数据
    List<dBlOrderDtOnline> getAllImportOrderInfosByOrderId(String orderId);

    // 根据订单编码和商品编码进行删除
    int deleteOrderDetailByItemIdAndOrderId(@Param("orderId") String orderId, @Param("itemId") String itemId);

    // 根据订单编码和商品编码进行逻辑删除
    int updateOrderDetailByItemIdAndOrderId(@Param("orderId") String orderId, @Param("itemId") String itemId);

    // 根据订单编码和商品编码进行逻辑删除
    int updateImportOrderDetailByItemIdAndOrderId(@Param("orderId") String orderId, @Param("itemId") String itemId);

    // 根据制单人获取该制单人下所有的订单明细信息
    List<dBlOrderDtOnline> getAllOrderDetailInfoByCreateStaff(String createStaffId);

    // 根据制单人编号和订单编号获取该订单下所有明细信息
    List<dBlOrderDtOnline> getAllOrderDetailInfoByCreateStaffAndOrderId(@Param("createStaffId") String createStaffId, @Param("orderId") String orderId);

    // 更新商品选购数量
    // 根据商品编号和制单人更新商品订购数量
    int updateOrderDetailOrderNumber(@Param("itemId") String itemId,
                                     @Param("createStaffId") String createStaffId,
                                     @Param("itemOrderNum") int itemOrderNum, @Param("orderId") String orderId);

    // 更新即将入库货品定量数量
    // 根据商品编号和制单人更新商品订购数量
    int updateOrderDetailjjrkhpdl(@Param("itemId") String itemId,
                                  @Param("createStaffId") String createStaffId,
                                  @Param("jjrkhpdlNumber") int jjrkhpdlNumber, @Param("orderId") String orderId);

    // 根据商品编号以及制单人编号获取当前商品对象
    dBlOrderDtOnline getOrderDetailInfoByItemIdAndCreateStaffId(@Param("itemId") String itemId,
                                                                @Param("createStaffId") String createStaffId,
                                                                @Param("orderId") String orderId);

    // 根据订单编号删除订单明细信息
    int deleteOrderInfoDetailByOrderId(String orderId);

    // 通过订单编号逻辑删除该订单下明细信息
    // 将cancelSign修改为Y
    int updateOrderDetailByOrderId(String orderId);

    // 通过制单人获取该制单人下所有订单明细
    List<dBlOrderDtOnline> getAllItemOrderDetailByCreateStaffId(String createStaff);

    // 根据订单号和客户编号/名称获取该订单下所有明细信息
    List<dBlOrderDtOnline> selectAllOrderDetailByOidAndCreId(@Param("orderId") String orderId, @Param("createStaffId") String createStaffId);

    // 订单统计，将小类进行分组展示 通过小类编号进行分组
    List<dBlOrderDtOnlineVo> selectAllOrderGroupBySmClassId(String orderId);

    // 更新单品订单备注（也就是订单明细的各个商品备注） 需要通过制单人编号、订单编号、商品编号以及传递过来的值
    int updateItemRemarkByCidAndOidAndItemId(@Param("createStaffId") String createStaffId, @Param("orderId") String orderId, @Param("itemId") String itemId, @Param("remark") String remark);

//    List<dBlOrderDtOnlineVo> selectAllGroupBySmClassId(String createStaffId);


    // 根据
}
